import * as vscode from 'vscode';
import { Command} from '../../../utils/commandManager';

export class 插入词典标签命令_ implements Command {
	public static readonly ID = 'ctsscript.插入词典标签命令_';
	public readonly ID = 插入词典标签命令_.ID;
	constructor() {}
	public async execute() {
        if (vscode.window.activeTextEditor) {
            let 当前编辑器 = vscode.window.activeTextEditor;
            let 当前文档 = vscode.window.activeTextEditor.document;
            let 选择 = 当前编辑器.selection;
            let 当前行对象 = 当前文档.lineAt(选择.isReversed ? 选择.anchor.line : 选择.active.line);
            let 行 = 选择.isReversed ? 选择.anchor.line : 选择.active.line;
            let 前部空格 = 当前行对象.text.substring(0, 当前行对象.firstNonWhitespaceCharacterIndex);
            let 词典头 = 前部空格 + "//##{}" + "\n";
            let 位置 = new vscode.Position(行, 0);
            if (当前行对象.isEmptyOrWhitespace) {
                词典头 = 前部空格 + "//##{}";
            }
            if (/^\s*\/\/##{.+$/.test(当前行对象.text)) {
                位置 = new vscode.Position(行 + 1, 0);
            }
            当前编辑器.edit(E => {
                E.replace(位置, 词典头);
            });
            let 新位置 = new vscode.Position(位置.line, 词典头.lastIndexOf("{") + 1);
            let 新选择 = new vscode.Selection(新位置, 新位置);
            当前编辑器.selection = 新选择;
        }        
	}
}
